package com.zenithmind.disk.service;

import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**
 * 文件下载服务接口
 * 遵循单一职责原则：专注于文件下载功能
 * 遵循接口隔离原则：将下载功能从主要文件服务中分离
 */
public interface FileDownloadService {

    /**
     * 下载单个文件
     * @param fileId 文件ID
     * @param userId 用户ID
     * @param response HTTP响应对象
     * @throws IOException IO异常
     */
    void downloadFile(String fileId, String userId, HttpServletResponse response) throws IOException;

    /**
     * 下载文件夹（ZIP格式）
     * @param folderId 文件夹ID
     * @param response HTTP响应对象
     * @throws IOException IO异常
     */
    void downloadDirectory(String folderId, HttpServletResponse response) throws IOException;

    /**
     * 获取文件的物理路径
     * @param fileId 文件ID
     * @param userId 用户ID
     * @return 文件路径
     */
    String getFilePath(String fileId, String userId);
}
